home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / modelers / geomview / source.lha / Geomview / src / bin / geomutil / ucd / ucd_defs.h < prev    next >
C/C++ Source or Header  |  1992-10-23  |  47KB  |  1,337 lines

  1. /*        @(#)ucd_defs.h    7.7 Stardent 92/03/20    */
  2. /*
  3.             Copyright (c) 1989 by
  4.             Stardent Computer Inc.
  5.             All Rights Reserved
  6.     
  7.     This software comprises unpublished confidential information of
  8.     Stardent Computer Inc. and may not be used, copied or made
  9.     available to anyone, except in accordance with the license
  10.     under which it is furnished.
  11.     
  12.     This file is under sccs control at AVS in:
  13.     @europa/sccs1.p/avs/include/s.ucd_defs.h
  14.     
  15. */
  16. /*#ifdef SX*/
  17. /* I don't like to see port-specific differences like this. */
  18. /* KCI thought it was necessary for SX-3. */
  19. /* See if it causes trouble on others. */
  20. #   include <avs/port.h>
  21. /*#endif SX*/
  22.  
  23.  
  24. /*---------------------------
  25.    Cell Type Definitions          
  26.  ---------------------------*/
  27.  
  28. #define UCD_NTYPES        8
  29. #define UCD_NUM_CELL_TYPES    8
  30.  
  31. #define UCD_POINT        0
  32. #define UCD_LINE        1
  33. #define    UCD_TRIANGLE        2
  34. #define UCD_QUADRILATERAL    3
  35. #define UCD_TETRAHEDRON        4
  36. #define UCD_PYRAMID        5
  37. #define UCD_PRISM        6
  38. #define UCD_HEXAHEDRON        7
  39.  
  40. #define UCD_MAX_NODE_PER_CELL    20
  41.  
  42. /*---------------------------
  43.    Miscellaneous Defines          
  44.  ---------------------------*/
  45.  
  46. #define UCD_MATERIAL_IDS  0x1
  47. #define UCD_NODE_NAMES    0x2
  48. #define UCD_CELL_NAMES    0x4
  49. #define UCD_CELL_TYPES    0x8
  50. #define UCD_MID_EDGES     0x10
  51. #define UCD_CHAR          0x20
  52. #define UCD_INT           0x40
  53.  
  54. #define UCD_LABEL_LEN         1024
  55. #define UCD_MAX_COMPONENTS    50
  56. #define UCD_MAX_VECLEN        9
  57.  
  58.  
  59. /*---------------------------
  60.    Cell Type Variables          
  61.  ---------------------------*/
  62.  
  63. extern    int    UCD_num_nodes[];    /* number of nodes in a cell */
  64. extern    int    UCD_num_mid_nodes[];    /* number of nodes in a cell */
  65.                     /* with mid-edge nodes         */
  66. extern    int    UCD_num_faces[];    /* number of faces in a cell */
  67.  
  68.  
  69.  
  70.  
  71. /*-----------------------------------------
  72.    Unstructured Cell Data Type Definitions
  73.  -----------------------------------------*/
  74.  
  75.  
  76. typedef union {                /* name union                        */
  77.      char        *c;        /* character string for label names  */
  78.      int        i;        /* integer for numerical names       */
  79. }  UCD_name;  
  80.  
  81.  
  82.  
  83. /*---------------------------------------
  84.    NOTE:  in the util_flag field, the two
  85.       rightmost bits are reserved for
  86.       internal usage.
  87.  -----------------------------------------*/
  88.  
  89.  
  90. typedef struct UCD_structure_ {    
  91.  
  92.      /*--------- Structure Header Information ---------*/
  93.      char        *name;         /* structure name                    */
  94.      int        name_flag;     /* are node/cell names chars or ints */
  95.      int        ncells;         /* number of cells                   */
  96.      int        nnodes;         /* number of nodes                   */
  97.     float        min_extent[3];     /* structure extent              */
  98.     float        max_extent[3];     /* structure extent              */
  99.      int        data_veclen;     /* length of data vector for struct  */
  100.     float        *data;         /* data for the structure          */
  101.     char        *data_labels;     /* labels for data components        */
  102.     char        *data_units;     /* labels for data units             */
  103.     int        util_flag;       /* utility flag (see above for any   */
  104.                      /* restrictions)               */
  105.  
  106.  
  107.      /*--------- Cell Information ---------*/
  108.     UCD_name    *cell_name;     /* cell names                      */
  109.      char        **element_type;     /* cell element types                */
  110.      int        *material_type;     /* user defined material types       */
  111.      int        *cell_type;     /* cell types (see above defines)    */
  112.      int        cell_veclen;     /* length of data vector             */
  113.      float        *cell_data;     /* data for cell-based datasets      */
  114.     float        *min_cell_data;  /* min val for cell data components  */
  115.     float        *max_cell_data;  /* max val for cell data components  */
  116.     char        *cell_labels;     /* labels for cell data components   */
  117.     char        *cell_units;     /* labels for cell data units        */
  118.     int        *cell_components;/* array of cell component mix       */
  119.     int        *cell_active;    /* array of active cell components   */
  120.      int        *mid_edge_flags; /* cell edges with mid edge nodes    */
  121.      int        node_conn_size;  /* size of the node connectivity list*/
  122.      int        *node_list;     /* node list of connectivity         */
  123.      int        *node_list_ptr;  /* location of a cell's node list    */
  124.      int        ucd_last_cell;  
  125.  
  126.   
  127.      /*--------- Node Information ---------*/
  128.     UCD_name    *node_name;     /* node names                        */
  129.      float        *x, *y, *z;     /* position of the nodes             */
  130.      int        node_veclen;     /* length of data vector             */
  131.      float        *node_data;     /* data vector for the nodes         */
  132.     float        *min_node_data;  /* min val for node data components  */
  133.     float        *max_node_data;  /* max val for node data components  */
  134.     char        *node_labels;     /* labels for node data components   */
  135.     char        *node_units;      /* labels for node data units        */
  136.     int        *node_components;/* array of node component mix       */
  137.     int        *node_active;    /* array of active node components   */
  138.      int        cell_conn_size;  /* size of the cell connectivity list*/
  139.      int        *cell_list;     /* cell list of connectivity         */
  140.      int        *cell_list_ptr;  /* location of a node's cell list    */
  141.      int        ucd_last_node;  
  142.  
  143.  
  144.     /*--------- Allocation Information ----------*/
  145.     enum {
  146.         UCD_ONE_BLOCK,
  147.         UCD_RW_SHM,
  148.         UCD_RO_SHM
  149.     }         alloc_case;    /* storage allocation strategy          */
  150.     int        shm_key;    /* shared memory key              */
  151.     int        shm_id;        /* shared memory id              */
  152.     char        *shm_base;    /* shared memory base              */
  153.     int             mesh_id;        /* unique id of the mesh instance     */
  154.  
  155. } UCD_structure;
  156.  
  157.  
  158.  
  159. /*----------------------------------------------------------------------------
  160.   ----------------------------------------------------------------------------
  161.  
  162.     Function Headers for the routines handling Unstructured Cell Data (UCD)
  163.  
  164.   ----------------------------------------------------------------------------
  165.   ---------------------------------------------------------------------------*/
  166.  
  167. /*----------------------------------------------------------------------------
  168. char  *UCDstructure_alloc (name, data_veclen, name_flag, 
  169.                ncells, cell_count, cell_veclen,
  170.                    nnodes, node_count, node_veclen, util_flag)
  171. char        *name;
  172. int        data_veclen;
  173. int        name_flag;
  174. int        ncells;
  175. int        cell_count;
  176. int        cell_veclen;
  177. int        nnodes;
  178. int        node_count;
  179. int        node_veclen;
  180. int        util_flag;
  181.  
  182. This function creates a new top level structure and returns a pointer
  183. to that structure.
  184.  
  185. Inputs:        name        - structure name
  186.         data_veclen    - length of structure data vector 
  187.         name_flag    - are node/cell names chars or ints
  188.                     char = UCD_CHAR,  int = UCD_INT
  189.         ncells        - number of cells in the structure
  190.         cell_count    - expected number of nodes per cell
  191.         cell_veclen    - length of cell data vector
  192.         nnodes        - number of nodes in the structure 
  193.         node_count    - expected number of cells per node
  194.         node_veclen    - length of node data vector
  195.         util_flag    - utility flag for general usage
  196. Outputs:             - none
  197. Returns:            - pointer to the new structure
  198.                   pointer = NULL if error
  199.  
  200. Description:
  201.  
  202.     The UCD_structure contains pointers to several blocks of memory.
  203.     They are arranged in two groups as shown below:
  204.  
  205.  
  206.         +-----------------------+  \
  207.         |            |   \
  208.         |   UCD_structure    |    |
  209.         |            |    |
  210.         |            |    |
  211.         | name, data,         |    |
  212.        |====| data_labels,         |    |
  213.        |====| element_type,        |    |
  214.        ||    | etc., etc., etc.    |    |
  215.        ||    |            |    |
  216.     |=======| cell_data,         |    |
  217.     |=======| x, y, z,        |     }  msize
  218.     || ||    | connectivity lists    |    |
  219.     || ||    | node_data        |    |
  220.     || ||    |            |    |
  221.     || ||    +-----------------------+    |
  222.     || |==>>|            |    |
  223.     || ||    |            |    |
  224.     || ||    |            |    |
  225.     || |==>>|            |    |
  226.     ||    | (Some of these are    |    |
  227.     ||    | arrays of pointers    |    |
  228.     ||    | to additional pieces    |    |
  229.     ||    | of malloc'ed memory.)    |    |
  230.     ||    |            |   /
  231.     ||    +-----------------------+  /
  232.     ||
  233.     ||    +-----------------------+  \
  234.     |=====>>|            |   \
  235.     ||    |            |    |
  236.     ||    | (All of these        |     }  ssize
  237.     |=====>>| are floats or ints.)    |    |
  238.         |            |    |
  239.         |            |   /
  240.         +-----------------------+  /
  241.  
  242.     
  243.     compute_sizes calculates the required memory block sizes msize 
  244.     and ssize.  The two blocks shown above can either be allocated
  245.     in one big chunk or be in separate regions of memory.
  246.  
  247.     The UCDstructure and most of the arrays it points to are allocated
  248.     in one big block of msize bytes.  This is allocated by malloc.
  249.     carve_up_the_memory fills in all the pointers to appropriate
  250.     positions in this block of memory.
  251.  
  252.     The cell_data, x, y, z, connectivity lists and node_data arrays 
  253.     tend to require very large amounts of memory so it is beneficial 
  254.     to put them in shared memory when possible.  When not appropriate, 
  255.     both blocks shown above can be obtained with a single malloc.
  256.  
  257.     The various cases are encoded in fields of UCDstructure:
  258.  
  259.     case 1 - Everything in one big malloc'ed block.
  260.  
  261.         This was the original implementation.  Will still be used
  262.         on sytems without shared memory or if the shared memory
  263.         allocation fails for any reason.
  264.  
  265.         alloc_case = UCD_ONE_BLOCK
  266.         shm_key not used
  267.         shm_id not used
  268.         shm_base not used
  269.  
  270.     case 2 - Second block is in Read/Write shared memory.
  271.  
  272.         This is the normal case for the producer of UCD.
  273.         
  274.         alloc_case = UCD_RW_SHM
  275.         shm_key = shared memory key 
  276.         shm_id = shared memory identifier
  277.         shm_base = base address of the shared memory
  278.  
  279.     case 3 - Second block is in Read-Only shared memory.
  280.  
  281.         This is the normal case for the consumer of UCD.
  282.  
  283.         The same UCD could be attached to more than one input
  284.         port so we don't want a consumer making any changes to it.
  285.         Therefore, the shared memory is made read-only.
  286.  
  287.         alloc_case = UCD_RO_SHM
  288.         shm_key = shared memory key  (this is passed thru the socket)
  289.         shm_id = shared memory identifier  (each process must 
  290.                 obtain this from shmget because each process
  291.                 might have a different id for the same
  292.                 shared memory segment)
  293.         shm_base = base address of the shared memory  (each process
  294.                 must obtain this from shmat because each
  295.                 process might have the shared memory
  296.                 segment at a different address)
  297.  
  298.     case 4 - Second block is in own malloc'ed block.
  299.  
  300.         Sometimes the consumer of a UCD will want to modify it
  301.         in place - to normalize it or something.
  302.  
  303.         The module writer can prevent any of the UCD from being
  304.         in Read-Only storage by specifying the MODIFY_IN option
  305.         in AVScreate_input_port.
  306.  
  307.         I'm sure not what to do about this yet.
  308.  
  309.         If it is not convenient to do something earlier, anything
  310.         in read-only shared memory will get copied into a malloc'ed
  311.         block and all the pointers will be fixed up.
  312.  
  313.         TO BE CONTINUED .....
  314.  
  315. -----------------------------------------------------------------------------*/
  316. extern char  *UCDstructure_alloc ();
  317.  
  318.  
  319.  
  320. /*----------------------------------------------------------------------------
  321. int UCDstructure_free (structure)
  322. UCD_structure *structure;
  323.  
  324. This function frees the storage used by structure.
  325.  
  326. Inputs:    structure        - structure to free
  327. Outputs:            - none
  328. Returns:            - 1 if successful, 0 if failure
  329. -----------------------------------------------------------------------------*/
  330. extern int UCDstructure_free ();
  331.  
  332.  
  333.  
  334. /*----------------------------------------------------------------------------
  335. int UCDstructure_get_header (structure, name, data_veclen, name_flag, ncells, 
  336.                  cell_veclen, nnodes, node_veclen, util_flag)
  337. UCD_structure    *structure;
  338. char        *name;
  339. int        *data_veclen;
  340. int        *name_flag;
  341. int        *ncells;
  342. int        *cell_veclen;
  343. int        *nnodes;
  344. int             *node_veclen;
  345. int        *util_flag;
  346.  
  347. This function finds out all the header information about a UCD_structure and
  348. returns those values.
  349.  
  350. Inputs:        structure    - structure to find information
  351. Outputs:    name        - structure name
  352.         data_veclen    - length of structure data vector 
  353.         name_flag    - are node/cell names chars or ints
  354.                     char = UCD_CHAR,  int = UCD_INT
  355.         ncells        - number of cells in the structure
  356.         cell_veclen    - length of cell data vector 
  357.          nnodes        - number of nodes in the structure
  358.         node_veclen    - length of node data vector 
  359.         util_flag    - utility flag
  360. Returns:            - 1 if successful, 0 if failure
  361. -----------------------------------------------------------------------------*/
  362. extern int UCDstructure_get_header ();
  363.  
  364.  
  365.  
  366. /*----------------------------------------------------------------------------
  367. int UCDstructure_set_header_flag (structure, util_flag)
  368. UCD_structure    *structure;
  369. int        util_flag;     
  370.  
  371. This function sets the header flag bits.
  372.  
  373. Inputs:        structure        - structure to find information
  374.              util_flag        - utility flag
  375. Returns:                - 1 if successful, 0 if failure
  376. -----------------------------------------------------------------------------*/
  377. extern int UCDstructure_set_header_flag ();
  378.  
  379.  
  380.  
  381. /*----------------------------------------------------------------------------
  382. int UCDstructure_get_data (structure, data)
  383. UCD_structure    *structure;
  384. float        **data;     
  385.  
  386. This function returns a pointer to the array containing the data vector
  387. for the structure.  
  388.  
  389. Inputs:        structure    - structure to find information
  390. Outputs:    data        - pointer to the structure data vector
  391. Returns:            - 1 if successful, 0 if failure
  392. -----------------------------------------------------------------------------*/
  393. extern int UCDstructure_get_data ();
  394.  
  395.  
  396.  
  397. /*----------------------------------------------------------------------------
  398. int UCDstructure_set_data (structure, data)
  399. UCD_structure    *structure;
  400. float        *data;     
  401.  
  402. This function copies the data from the array pointed to by "data"
  403. into the structure's data array.  There should be data_veclen
  404. data elements in this array.
  405.  
  406. Inputs:        structure    - structure to find information
  407.             data        - pointer to the data vector
  408. Returns:            - 1 if successful, 0 if failure
  409. -----------------------------------------------------------------------------*/
  410. extern int UCDstructure_set_data ();
  411.  
  412.  
  413.  
  414. /*----------------------------------------------------------------------------
  415. int UCDstructure_get_extent (structure, min_extent, max_extent)
  416. UCD_structure    *structure;
  417. float        *min_extent;
  418. float        *max_extent;
  419.  
  420. This routine allows the module writer to obtain the extent of the
  421. structure. 
  422.  
  423.  
  424. Inputs:        structure        - structure to find information
  425. Outputs:     min_extent         - coordinate extent of structure
  426.              max_extent         - coordinate extent of structure
  427. Returns:                - 1 if successful, 0 if failure
  428. -----------------------------------------------------------------------------*/
  429. extern int UCDstructure_get_extent ();
  430.  
  431.  
  432.  
  433. /*----------------------------------------------------------------------------
  434. int UCDstructure_set_extent (structure, min_extent, max_extent)
  435. UCD_structure    *structure;
  436. float        *min_extent;
  437. float        *max_extent;
  438.  
  439. This routine allows the module writer to set the extent of the
  440. structure. 
  441.  
  442. Inputs:        structure        - structure to find information
  443.              min_extent         - coordinate extent of structure
  444.              max_extent         - coordinate extent of structure
  445. Returns:                - 1 if successful, 0 if failure
  446. -----------------------------------------------------------------------------*/
  447. extern int UCDstructure_set_extent ();
  448.  
  449.  
  450.  
  451. /*----------------------------------------------------------------------------
  452. int UCDstructure_get_data_labels (structure, labels, delimiter)
  453. UCD_structure    *structure;
  454. char         *labels;
  455. char         *delimiter;
  456.  
  457. This routine allows the module writer to get the labels for each
  458. component in the structure. These labels are for cases when there is 
  459. structure based data.  
  460.  
  461. For instance, in the case of a CFD dataset,
  462. the module writer might want to label components of the field as
  463. temperature, density, mach number, etc.  In turn, these labels would
  464. appear on the dials so that the user would have a better understanding
  465. of which component each dial is attached to.
  466.  
  467.    Example:   labels    = "temp;density;mach number"
  468.               delimiter = ";"
  469.  
  470. Inputs:        structure        - structure to find information
  471. Outputs:     labels             - string with labels included   
  472.              delimiter          - delimiter between each label  
  473. Returns:                - 1 if successful, 0 if failure
  474. -----------------------------------------------------------------------------*/
  475. extern int UCDstructure_get_data_labels ();
  476.  
  477.  
  478.  
  479. /*--------------------------------------------------------------------
  480. int  UCDstructure_get_data_label (structure, number, label)
  481. UCD_structure    *structure;
  482. int             number; 
  483. char            *label;   
  484.  
  485. This routine allows the module writer to query the label for an individual 
  486. component in the structure.  
  487.  
  488. Input:        structure    -- structure to get labels in
  489.         number        -- individual component number
  490. Outputs:    labels        -- string with labels included
  491. Returns:            -- 1 if success;  0 if failure
  492. ----------------------------------------------------------------------*/
  493. extern int  UCDstructure_get_data_label ();
  494.  
  495.  
  496.  
  497. /*----------------------------------------------------------------------------
  498. int UCDstructure_set_data_labels (structure, labels, delimiter)
  499. UCD_structure    *structure;
  500. char         *labels;
  501. char         *delimiter;
  502.  
  503. This routine allows the module writer to set the labels for each
  504. component in the structure. These labels are for cases when there is 
  505. structure based data.  
  506.  
  507. For instance, in the case of a CFD dataset,
  508. the module writer might want to label components of the field as
  509. temperature, density, mach number, etc.  In turn, these labels would
  510. appear on the dials so that the user would have a better understanding
  511. of which component each dial is attached to.
  512.  
  513.    Example:   labels    = "temp;density;mach number"
  514.               delimiter = ";"
  515.  
  516. Inputs:        structure        - structure to find information
  517.              labels             - string with labels included   
  518.              delimiter          - delimiter between each label  
  519. Returns:                - 1 if successful, 0 if failure
  520. -----------------------------------------------------------------------------*/
  521. extern int UCDstructure_set_data_labels ();
  522.  
  523.  
  524.  
  525. /*----------------------------------------------------------------------------
  526. int UCDstructure_get_cell_labels (structure, labels, delimiter)
  527. UCD_structure    *structure;
  528. char         *labels;
  529. char         *delimiter;
  530.  
  531. This routine allows the module writer to get the labels for each
  532. component in the structure. These labels are for cases when there is 
  533. cell based data.  
  534.  
  535. For instance, in the case of a CFD dataset,
  536. the module writer might want to label components of the field as
  537. temperature, density, mach number, etc.  In turn, these labels would
  538. appear on the dials so that the user would have a better understanding
  539. of which component each dial is attached to.
  540.  
  541.    Example:   labels    = "temp;density;mach number"
  542.               delimiter = ";"
  543.  
  544. Inputs:        structure        - structure to find information
  545. Outputs:     labels             - string with labels included   
  546.              delimiter          - delimiter between each label  
  547. Returns:                - 1 if successful, 0 if failure
  548. -----------------------------------------------------------------------------*/
  549. extern int UCDstructure_get_cell_labels ();
  550.  
  551.  
  552.  
  553. /*--------------------------------------------------------------------
  554. int  UCDstructure_get_cell_label (structure, number, label)
  555. UCD_structure    *structure;
  556. int             number; 
  557. char            *label;   
  558.  
  559. This routine allows the module writer to query the label for an individual 
  560. component in the structure.  
  561.  
  562. Input:        structure    -- structure to get labels in
  563.         number        -- individual component number
  564. Outputs:    labels        -- string with labels included
  565. Returns:            -- 1 if success;  0 if failure
  566. ----------------------------------------------------------------------*/
  567. extern int  UCDstructure_get_cell_label ();
  568.  
  569.  
  570.  
  571. /*----------------------------------------------------------------------------
  572. int UCDstructure_set_cell_labels (structure, labels, delimiter)
  573. UCD_structure    *structure;
  574. char         *labels;
  575. char         *delimiter;
  576.  
  577. This routine allows the module writer to set the labels for each
  578. component in the structure. These labels are for cases when there is 
  579. cell based data.  
  580.  
  581. For instance, in the case of a CFD dataset,
  582. the module writer might want to label components of the field as
  583. temperature, density, mach number, etc.  In turn, these labels would
  584. appear on the dials so that the user would have a better understanding
  585. of which component each dial is attached to.
  586.  
  587.    Example:   labels    = "temp;density;mach number"
  588.               delimiter = ";"
  589.  
  590. Inputs:        structure        - structure to find information
  591.              labels             - string with labels included   
  592.              delimiter          - delimiter between each label  
  593. Returns:                - 1 if successful, 0 if failure
  594. -----------------------------------------------------------------------------*/
  595. extern int UCDstructure_set_cell_labels ();
  596.  
  597.  
  598.  
  599. /*----------------------------------------------------------------------------
  600. int UCDstructure_get_node_labels (structure, labels, delimiter)
  601. UCD_structure    *structure;
  602. char         *labels;
  603. char         *delimiter;
  604.  
  605. This routine allows the module writer to get the labels for each
  606. component in the structure. These labels are for cases when there is 
  607. node based data.  
  608.  
  609. For instance, in the case of a CFD dataset,
  610. the module writer might want to label components of the field as
  611. temperature, density, mach number, etc.  In turn, these labels would
  612. appear on the dials so that the user would have a better understanding
  613. of which component each dial is attached to.
  614.  
  615.    Example:   labels    = "temp;density;mach number"
  616.               delimiter = ";"
  617.  
  618. Inputs:        structure        - structure to find information
  619. Outputs:     labels             - string with labels included   
  620.              delimiter          - delimiter between each label  
  621. Returns:                - 1 if successful, 0 if failure
  622. -----------------------------------------------------------------------------*/
  623. extern int UCDstructure_get_node_labels ();
  624.  
  625.  
  626.  
  627. /*--------------------------------------------------------------------
  628. int  UCDstructure_get_node_label (structure, number, label)
  629. UCD_structure    *structure;
  630. int             number; 
  631. char            *label;   
  632.  
  633. This routine allows the module writer to query the label for an individual 
  634. component in the structure.  
  635.  
  636. Input:        structure    -- structure to get labels in
  637.         number        -- individual component number
  638. Outputs:    labels        -- string with labels included
  639. Returns:            -- 1 if success;  0 if failure
  640. ----------------------------------------------------------------------*/
  641. extern int  UCDstructure_get_node_label ();
  642.  
  643.  
  644.  
  645. /*----------------------------------------------------------------------------
  646. int UCDstructure_set_node_labels (structure, labels, delimiter)
  647. UCD_structure    *structure;
  648. char         *labels;
  649. char         *delimiter;
  650.  
  651. This routine allows the module writer to set the labels for each
  652. component in the structure. These labels are for cases when there is 
  653. node based data.  
  654.  
  655. For instance, in the case of a CFD dataset,
  656. the module writer might want to label components of the field as
  657. temperature, density, mach number, etc.  In turn, these labels would
  658. appear on the dials so that the user would have a better understanding
  659. of which component each dial is attached to.
  660.  
  661.    Example:   labels    = "temp;density;mach number"
  662.               delimiter = ";"
  663.  
  664. Inputs:        structure        - structure to find information
  665.              labels             - string with labels included   
  666.              delimiter          - delimiter between each label  
  667. Returns:                - 1 if successful, 0 if failure
  668. -----------------------------------------------------------------------------*/
  669. extern int UCDstructure_set_node_labels ();
  670.  
  671.  
  672. /*----------------------------------------------------------------------------
  673. int UCDstructure_get_data_units (structure, labels, delimiter)
  674. UCD_structure    *structure;
  675. char         *labels;
  676. char         *delimiter;
  677.  
  678. This routine allows the module writer to get the unit labels for each
  679. component in the structure. These labels are for cases when there is 
  680. structure based data.  
  681.  
  682. For instance, in the case of a CFD dataset, the module writer might want 
  683. to label components of the field as degrees, meters, etc.  
  684.  
  685.    Example:   labels    = "degrees;meters"
  686.               delimiter = ";"
  687.  
  688. Inputs:        structure        - structure to find information
  689. Outputs:     labels             - string with labels included   
  690.              delimiter          - delimiter between each label  
  691. Returns:                - 1 if successful, 0 if failure
  692. -----------------------------------------------------------------------------*/
  693. extern int UCDstructure_get_data_units ();
  694.  
  695.  
  696.  
  697. /*--------------------------------------------------------------------
  698. int  UCDstructure_get_data_unit (structure, number, label)
  699. UCD_structure    *structure;
  700. int             number; 
  701. char            *label;   
  702.  
  703. This routine allows the module writer to query the label for an individual 
  704. unit in the structure.  
  705.  
  706. Input:        structure    -- structure to get labels in
  707.         number        -- individual component number
  708. Outputs:    labels        -- string with labels included
  709. Returns:            -- 1 if success;  0 if failure
  710. ----------------------------------------------------------------------*/
  711. extern int  UCDstructure_get_data_unit ();
  712.  
  713.  
  714.  
  715. /*----------------------------------------------------------------------------
  716. int UCDstructure_set_data_units (structure, labels, delimiter)
  717. UCD_structure    *structure;
  718. char         *labels;
  719. char         *delimiter;
  720.  
  721. This routine allows the module writer to set the unit labels for each
  722. component in the structure. These labels are for cases when there is 
  723. structure based data.  
  724.  
  725. For instance, in the case of a CFD dataset, the module writer might want 
  726. to label components of the field as degrees, meters, etc.  
  727.  
  728.    Example:   labels    = "degrees;meters"
  729.               delimiter = ";"
  730.  
  731. Inputs:        structure        - structure to find information
  732.              labels             - string with labels included   
  733.              delimiter          - delimiter between each label  
  734. Returns:                - 1 if successful, 0 if failure
  735. -----------------------------------------------------------------------------*/
  736. extern int UCDstructure_set_data_units ();
  737.  
  738.  
  739.  
  740. /*----------------------------------------------------------------------------
  741. int UCDstructure_get_cell_units (structure, labels, delimiter)
  742. UCD_structure    *structure;
  743. char         *labels;
  744. char         *delimiter;
  745.  
  746. This routine allows the module writer to get the unit labels for each
  747. component in the structure. These labels are for cases when there is 
  748. cell based data.  
  749.  
  750. For instance, in the case of a CFD dataset, the module writer might want 
  751. to label components of the field as degrees, meters, etc.  
  752.  
  753.    Example:   labels    = "degrees;meters"
  754.               delimiter = ";"
  755.  
  756. Inputs:        structure        - structure to find information
  757. Outputs:     labels             - string with labels included   
  758.              delimiter          - delimiter between each label  
  759. Returns:                - 1 if successful, 0 if failure
  760. -----------------------------------------------------------------------------*/
  761. extern int UCDstructure_get_cell_units ();
  762.  
  763.  
  764.  
  765. /*--------------------------------------------------------------------
  766. int  UCDstructure_get_cell_unit (structure, number, label)
  767. UCD_structure    *structure;
  768. int             number; 
  769. char            *label;   
  770.  
  771. This routine allows the module writer to query the label for an individual 
  772. unit in the structure.  
  773.  
  774. Input:        structure    -- structure to get labels in
  775.         number        -- individual component number
  776. Outputs:    labels        -- string with labels included
  777. Returns:            -- 1 if success;  0 if failure
  778. ----------------------------------------------------------------------*/
  779. extern int  UCDstructure_get_cell_unit ();
  780.  
  781.  
  782.  
  783. /*----------------------------------------------------------------------------
  784. int UCDstructure_set_cell_units (structure, labels, delimiter)
  785. UCD_structure    *structure;
  786. char         *labels;
  787. char         *delimiter;
  788.  
  789. This routine allows the module writer to set the unit labels for each
  790. component in the structure. These labels are for cases when there is 
  791. cell based data.  
  792.  
  793. For instance, in the case of a CFD dataset, the module writer might want 
  794. to label components of the field as degrees, meters, etc.  
  795.  
  796.    Example:   labels    = "degrees;meters"
  797.               delimiter = ";"
  798.  
  799. Inputs:        structure        - structure to find information
  800.              labels             - string with labels included   
  801.              delimiter          - delimiter between each label  
  802. Returns:                - 1 if successful, 0 if failure
  803. -----------------------------------------------------------------------------*/
  804. extern int UCDstructure_set_cell_units ();
  805.  
  806.  
  807.  
  808. /*----------------------------------------------------------------------------
  809. int UCDstructure_get_node_units (structure, labels, delimiter)
  810. UCD_structure    *structure;
  811. char         *labels;
  812. char         *delimiter;
  813.  
  814. This routine allows the module writer to get the unit labels for each
  815. component in the structure. These labels are for cases when there is 
  816. node based data.  
  817.  
  818. For instance, in the case of a CFD dataset, the module writer might want 
  819. to label components of the field as degrees, meters, etc.  
  820.  
  821.    Example:   labels    = "degrees;meters"
  822.               delimiter = ";"
  823.  
  824. Inputs:        structure        - structure to find information
  825. Outputs:     labels             - string with labels included   
  826.              delimiter          - delimiter between each label  
  827. Returns:                - 1 if successful, 0 if failure
  828. -----------------------------------------------------------------------------*/
  829. extern int UCDstructure_get_node_units ();
  830.  
  831.  
  832.  
  833. /*--------------------------------------------------------------------
  834. int  UCDstructure_get_node_unit (structure, number, label)
  835. UCD_structure    *structure;
  836. int             number; 
  837. char            *label;   
  838.  
  839. This routine allows the module writer to query the label for an individual 
  840. unit in the structure.  
  841.  
  842. Input:        structure    -- structure to get labels in
  843.         number        -- individual component number
  844. Outputs:    labels        -- string with labels included
  845. Returns:            -- 1 if success;  0 if failure
  846. ----------------------------------------------------------------------*/
  847. extern int  UCDstructure_get_node_unit ();
  848.  
  849.  
  850.  
  851. /*----------------------------------------------------------------------------
  852. int UCDstructure_set_node_units (structure, labels, delimiter)
  853. UCD_structure    *structure;
  854. char         *labels;
  855. char         *delimiter;
  856.  
  857. This routine allows the module writer to set the unit labels for each
  858. component in the structure. These labels are for cases when there is 
  859. node based data.  
  860.  
  861. For instance, in the case of a CFD dataset, the module writer might want 
  862. to label components of the field as degrees, meters, etc.  
  863.  
  864.    Example:   labels    = "degrees;meters"
  865.               delimiter = ";"
  866.  
  867. Inputs:        structure        - structure to find information
  868.              labels             - string with labels included   
  869.              delimiter          - delimiter between each label  
  870. Returns:                - 1 if successful, 0 if failure
  871. -----------------------------------------------------------------------------*/
  872. extern int UCDstructure_set_node_units ();
  873.  
  874.  
  875.  
  876. /*---------------------------------------------------------------------------
  877. int UCDstructure_invalid_cell_minmax (structure)
  878. UCD_structure        *structure;
  879.  
  880. This routine allows the module writer to set the min/max range of the
  881. structure cell data to be invalid.  This function should be used after 
  882. the structure data has been changed by the module and the module does 
  883. not want to spend the time recomputing the cell minmax.                   
  884.  
  885. Input:          structure       -- structure to set cell min/max invalid
  886. Outputs:                        -- none
  887. Returns:                        -- 1 if successful, 0 if failure
  888. -----------------------------------------------------------------------------*/
  889. extern int UCDstructure_invalid_cell_minmax ();
  890.  
  891.  
  892.  
  893. /*---------------------------------------------------------------------------
  894. int  UCDstructure_get_cell_minmax (structure, min, max)
  895. UCD_structure   *structure;
  896. float           *min;
  897. float           *max;
  898.  
  899. This routine allows the module writer to obtain the range of the
  900. structure cell data.  It should be noted that min and max are arrays of
  901. dimension structure->cell_veclen.
  902.  
  903. Input:          structure       -- structure to get min/max in
  904. Outputs:        min             -- value of minimum data point
  905.         max             -- value of maximum data point
  906. Returns:                        -- 1 = valid data;  0 = invalid data
  907. -----------------------------------------------------------------------------*/
  908. extern int  UCDstructure_get_cell_minmax ();
  909.  
  910.  
  911.  
  912. /*---------------------------------------------------------------------------
  913. int  UCDstructure_set_cell_minmax (structure, min, max)
  914. UCD_structure   *structure;
  915. float           *min;
  916. float           *max;
  917.  
  918. This routine allows the module writer to set the range of the
  919. structure cell data.  It should be noted that min and max are arrays of
  920. dimension structure->cell_veclen.
  921.  
  922. Input:          structure       -- structure to set min/max in
  923. Outputs:        min             -- value of minimum data point
  924.         max             -- value of maximum data point
  925. Returns:                        -- 1 if successful;  0 if failure
  926. -----------------------------------------------------------------------------*/
  927. extern int  UCDstructure_set_cell_minmax ();
  928.  
  929.  
  930.  
  931. /*---------------------------------------------------------------------------
  932. int UCDstructure_invalid_node_minmax (structure)
  933. UCD_structure        *structure;
  934.  
  935. This routine allows the module writer to set the min/max range of the
  936. structure node data to be invalid.  This function should be used after 
  937. the structure data has been changed by the module and the module does 
  938. not want to spend the time recomputing the node minmax.                   
  939.  
  940. Input:          structure       -- structure to set node min/max invalid
  941. Outputs:                        -- none
  942. Returns:                        -- 1 if successful, 0 if failure
  943. -----------------------------------------------------------------------------*/
  944. extern int UCDstructure_invalid_node_minmax ();
  945.  
  946.  
  947.  
  948. /*---------------------------------------------------------------------------
  949. int  UCDstructure_get_node_minmax (structure, min, max)
  950. UCD_structure   *structure;
  951. float           *min;
  952. float           *max;
  953.  
  954. This routine allows the module writer to obtain the range of the
  955. structure node data.  It should be noted that min and max are arrays of
  956. dimension structure->node_veclen.
  957.  
  958. Input:          structure       -- structure to get min/max in
  959. Outputs:        min             -- value of minimum data point
  960.         max             -- value of maximum data point
  961. Returns:                        -- 1 = valid data;  0 = invalid data
  962. -----------------------------------------------------------------------------*/
  963. extern int  UCDstructure_get_node_minmax ();
  964.  
  965.  
  966.  
  967. /*---------------------------------------------------------------------------
  968. int  UCDstructure_set_node_minmax (structure, min, max)
  969. UCD_structure   *structure;
  970. float           *min;
  971. float           *max;
  972.  
  973. This routine allows the module writer to set the range of the
  974. structure node data.  It should be noted that min and max are arrays of
  975. dimension structure->node_veclen.
  976.  
  977. Input:          structure       -- structure to set min/max in
  978. Outputs:        min             -- value of minimum data point
  979.         max             -- value of maximum data point
  980. Returns:                        -- 1 if successful;  0 if failure
  981. -----------------------------------------------------------------------------*/
  982. extern int  UCDstructure_set_node_minmax ();
  983.  
  984.  
  985.  
  986. /*----------------------------------------------------------------------------
  987. int UCDstructure_get_cell_data (structure, data)
  988. UCD_structure    *structure;
  989. float        **data;     
  990.  
  991. This function returns a pointer to the array containing the data vectors
  992. for all of the cells in the structure.  
  993.  
  994. Inputs:        structure    - structure to find information
  995. Outputs:    data        - pointer to the cell data vectors
  996. Returns:            - 1 if successful, 0 if failure
  997. -----------------------------------------------------------------------------*/
  998. extern int UCDstructure_get_cell_data ();
  999.  
  1000.  
  1001.  
  1002. /*----------------------------------------------------------------------------
  1003. int UCDstructure_set_cell_data (structure, data)
  1004. UCD_structure    *structure;
  1005. float        *data;     
  1006.  
  1007. This function copies the cell data from the array pointed to by "data"
  1008. into the structure's cell data array.  There should be cell_veclen*ncells
  1009. data elements in this array.
  1010.  
  1011. Inputs:        structure    - structure to find information
  1012.             data        - pointer to the cell data vectors
  1013. Returns:            - 1 if successful, 0 if failure
  1014. -----------------------------------------------------------------------------*/
  1015. extern int UCDstructure_set_cell_data ();
  1016.  
  1017.  
  1018.  
  1019. /*----------------------------------------------------------------------------
  1020. int UCDstructure_get_node_data (structure, data)
  1021. UCD_structure    *structure;
  1022. float        **data;     
  1023.  
  1024. This function returns pointers to the array containing the data vectors
  1025. for the nodes.
  1026.  
  1027. Inputs:        structure    - structure to find information
  1028. Outputs:    data        - pointer to the node data vectors
  1029. Returns:            - 1 if successful, 0 if failure
  1030. -----------------------------------------------------------------------------*/
  1031. extern int UCDstructure_get_node_data ();
  1032.  
  1033.  
  1034.  
  1035. /*----------------------------------------------------------------------------
  1036. int UCDstructure_set_node_data (structure, data)
  1037. UCD_structure    *structure;
  1038. float        *data;     
  1039.  
  1040. This function copies the node data from the array pointed to by "data"
  1041. into the structure's node data array.  There should be node_veclen*nnodes
  1042. data elements in this array.
  1043.  
  1044. Inputs:        structure    - structure to find information
  1045.             data        - pointer to the node data vectors
  1046. Returns:            - 1 if successful, 0 if failure
  1047. -----------------------------------------------------------------------------*/
  1048. extern int UCDstructure_set_node_data ();
  1049.  
  1050.  
  1051.  
  1052. /*----------------------------------------------------------------------------
  1053. int UCDstructure_get_cell_components (structure, components)
  1054. UCD_structure    *structure;
  1055. int          **components;     
  1056.  
  1057. This function returns pointers to the array containing the cell component
  1058. list.  For instance, if there are four different components in the
  1059. cell data vector (e.g.  scalar, 3-vector, 2-vector, scalar), the component
  1060. list would be:  (1 3 2 1)
  1061.  
  1062. Inputs:        structure    - structure to find information
  1063. Outputs:    components    - pointer to the cell component list  
  1064. Returns:            - 1 if successful, 0 if failure
  1065. -----------------------------------------------------------------------------*/
  1066. extern int UCDstructure_get_cell_components ();
  1067.  
  1068.  
  1069.  
  1070. /*----------------------------------------------------------------------------
  1071. int UCDstructure_set_cell_components (structure, components, number)
  1072. UCD_structure    *structure;
  1073. int          *components;     
  1074. int        number;
  1075.  
  1076. This function copies the array containing the cell component
  1077. list.  For instance, if there are four different components in the
  1078. cell data vector (e.g.  scalar, 3-vector, 2-vector, scalar), the component
  1079. list would be:  (1 3 2 1)
  1080.  
  1081. Inputs:        structure    - structure to find information
  1082.              components    - pointer to the cell component list  
  1083.         number        - number of components in the list
  1084. Returns:            - 1 if successful, 0 if failure
  1085. -----------------------------------------------------------------------------*/
  1086. extern int UCDstructure_set_cell_components ();
  1087.  
  1088.  
  1089.  
  1090. /*----------------------------------------------------------------------------
  1091. int UCDstructure_get_node_components (structure, components)
  1092. UCD_structure    *structure;
  1093. int          **components;     
  1094.  
  1095. This function returns pointers to the array containing the node component
  1096. list.  For instance, if there are four different components in the
  1097. node data vector (e.g.  scalar, 3-vector, 2-vector, scalar), the component
  1098. list would be:  (1 3 2 1)
  1099.  
  1100. Inputs:        structure    - structure to find information
  1101. Outputs:    components    - pointer to the node component list  
  1102. Returns:            - 1 if successful, 0 if failure
  1103. -----------------------------------------------------------------------------*/
  1104. extern int UCDstructure_get_node_components ();
  1105.  
  1106.  
  1107.  
  1108. /*----------------------------------------------------------------------------
  1109. int UCDstructure_set_node_components (structure, components, number)
  1110. UCD_structure    *structure;
  1111. int          *components;     
  1112. int        number;
  1113.  
  1114. This function copies the array containing the node component
  1115. list.  For instance, if there are four different components in the
  1116. node data vector (e.g.  scalar, 3-vector, 2-vector, scalar), the component
  1117. list would be:  (1 3 2 1)
  1118.  
  1119. Inputs:        structure    - structure to find information
  1120.              components    - pointer to the node component list  
  1121.         number        - number of components in the list
  1122. Returns:            - 1 if successful, 0 if failure
  1123. -----------------------------------------------------------------------------*/
  1124. extern int UCDstructure_set_node_components ();
  1125.  
  1126.  
  1127.  
  1128. /*----------------------------------------------------------------------------
  1129. int UCDstructure_get_cell_active (structure, active)
  1130. UCD_structure    *structure;
  1131. int          **active;     
  1132.  
  1133. This function returns a pointer to the array containing the cell 
  1134. active component list.  For instance, if there are four different components 
  1135. in the cell data vector and the module is using the second component, the
  1136. list would be:  (0 1 0 0)
  1137.  
  1138. Inputs:        structure    - structure to find information
  1139. Outputs:    active        - pointer to the cell active component list  
  1140. Returns:            - 1 if successful, 0 if failure
  1141. -----------------------------------------------------------------------------*/
  1142. extern int UCDstructure_get_cell_active ();
  1143.  
  1144.  
  1145.  
  1146. /*----------------------------------------------------------------------------
  1147. int UCDstructure_set_cell_active (structure, active)
  1148. UCD_structure    *structure;
  1149. int          *active;     
  1150.  
  1151. This function sets the array containing the cell active component list.  
  1152. For instance, if there are four different components in the cell data 
  1153. vector and the module is using the second component, the list would 
  1154. be:  (0 1 0 0)
  1155.  
  1156. Inputs:        structure    - structure to find information
  1157.              active        - pointer to the cell active component list  
  1158. Returns:            - 1 if successful, 0 if failure
  1159. -----------------------------------------------------------------------------*/
  1160. extern int UCDstructure_set_cell_active ();
  1161.  
  1162.  
  1163.  
  1164. /*----------------------------------------------------------------------------
  1165. int UCDstructure_get_node_active (structure, active)
  1166. UCD_structure    *structure;
  1167. int          **active;     
  1168.  
  1169. This function returns a pointer to the array containing the node 
  1170. active component list.  For instance, if there are four different components 
  1171. in the node data vector and the module is using the second component, the
  1172. list would be:  (0 1 0 0)
  1173.  
  1174. Inputs:        structure    - structure to find information
  1175. Outputs:    active        - pointer to the node active component list  
  1176. Returns:            - 1 if successful, 0 if failure
  1177. -----------------------------------------------------------------------------*/
  1178. extern int UCDstructure_get_node_active ();
  1179.  
  1180.  
  1181.  
  1182. /*----------------------------------------------------------------------------
  1183. int UCDstructure_set_node_active (structure, active)
  1184. UCD_structure    *structure;
  1185. int          *active;     
  1186.  
  1187. This function sets the array containing the node active component list.  
  1188. For instance, if there are four different components in the node data 
  1189. vector and the module is using the second component, the list would 
  1190. be:  (0 1 0 0)
  1191.  
  1192. Inputs:        structure    - structure to find information
  1193.              active        - pointer to the node active component list  
  1194. Returns:            - 1 if successful, 0 if failure
  1195. -----------------------------------------------------------------------------*/
  1196. extern int UCDstructure_set_node_active ();
  1197.  
  1198.  
  1199.  
  1200. /*----------------------------------------------------------------------------
  1201. int UCDstructure_get_node_positions (structure, x, y, z)
  1202. UCD_structure    *structure;
  1203. float        **x, **y, **z;
  1204.  
  1205. This function returns pointers to the arrays containing the x, y and z
  1206. coordinates of node positions.
  1207.  
  1208. Inputs:        structure    - structure to find information
  1209. Outputs:    x, y, z        - pointer to the x,y,z arrays
  1210. Returns:            - 1 if successful, 0 if failure
  1211. -----------------------------------------------------------------------------*/
  1212. extern int UCDstructure_get_node_positions ();
  1213.  
  1214.  
  1215.  
  1216. /*----------------------------------------------------------------------------
  1217. int UCDstructure_set_node_positions (structure, x, y, z)
  1218. UCD_structure    *structure;
  1219. float        *x, *y, *z;
  1220.  
  1221. This function copies the x, y and z coordinate arrays from the arrays
  1222. pointed to by "x", "y" and "z" into the structure's node position arrays.
  1223. There should be nnodes coordinates in each array.
  1224.  
  1225. Inputs:        structure    - structure to find information
  1226.             x, y, z        - pointer to the x,y,z arrays
  1227. Returns:            - 1 if successful, 0 if failure
  1228. -----------------------------------------------------------------------------*/
  1229. extern int UCDstructure_set_node_positions ();
  1230.  
  1231.  
  1232.  
  1233.  
  1234. /*----------------------------------------------------------------------------
  1235. int UCDcell_get_information (structure, cell, name, element_type, 
  1236.                  material_type, cell_type, 
  1237.                   mid_edge_flags, node_list)
  1238. UCD_structure    *structure;
  1239. int        cell;
  1240. int         *name;
  1241. char        *element_type;
  1242. int         *material_type;
  1243. int        *cell_type;
  1244. int        *mid_edge_flags;
  1245. int        **node_list;
  1246.  
  1247. This function finds out all the information about a particular cell and
  1248. returns those values.
  1249.  
  1250. Inputs:        structure    - structure to find information
  1251.         cell        - cell to find information
  1252. Outputs:    name        - cell name
  1253.         element_type    - name of element type
  1254.         material_type    - user defined material type
  1255.         cell_type    - cell type (e.g. UCD_TRIANGLE)
  1256.         data        - data for cell-based datasets
  1257.         mid_edge_flags    - does the cell have mid edge nodes
  1258.         node_list    - array of node numbers
  1259. Returns:            - 1 if successful, 0 if failure
  1260. -----------------------------------------------------------------------------*/
  1261. extern int UCDcell_get_information ();
  1262.  
  1263.  
  1264.  
  1265. /*----------------------------------------------------------------------------
  1266. int UCDcell_set_information (structure, cell, name, element_type, 
  1267.                  material_type, cell_type, 
  1268.                   mid_edge_flags, node_list)
  1269. UCD_structure    *structure;
  1270. int        cell;
  1271. int         name;
  1272. char        *element_type;
  1273. int         material_type;
  1274. int        cell_type;
  1275. int        mid_edge_flags;
  1276. int        *node_list;
  1277.  
  1278. This function sets all the information about a particular cell.
  1279.  
  1280. Inputs:        structure    - structure to find information
  1281.         cell        - cell to find information
  1282.         name        - cell name
  1283.         element_type    - name of element type
  1284.         material_type    - user defined material type
  1285.         cell_type    - cell type (e.g. UCD_TRIANGLE)
  1286.         mid_edge_flags    - does the cell have mid edge nodes
  1287.         node_list    - array of node numbers
  1288. Returns:            - 1 if successful, 0 if failure
  1289. -----------------------------------------------------------------------------*/
  1290. extern int UCDcell_set_information ();
  1291.  
  1292.  
  1293.  
  1294. /*----------------------------------------------------------------------------
  1295. int UCDnode_get_information (structure, node, name, ncells, cell_list)
  1296. UCD_structure    *structure;
  1297. int        node;
  1298. int         *name;
  1299. int        *ncells;
  1300. int        **cell_list;
  1301.  
  1302. This function finds out all the information about a particular node and
  1303. returns those values.
  1304.  
  1305. Inputs:        structure    - structure to find information
  1306.         node        - node to find information
  1307. Outputs:    name        - node name
  1308.         ncells        - number of cells in cell_list
  1309.         cell_list    - array of cell numbers
  1310. Returns:            - 1 if successful, 0 if failure
  1311. -----------------------------------------------------------------------------*/
  1312. extern int UCDnode_get_information ();
  1313.  
  1314.  
  1315.  
  1316. /*----------------------------------------------------------------------------
  1317. int UCDnode_set_information (structure, node, name, ncells, cell_list)
  1318. UCD_structure    *structure;
  1319. int        node;
  1320. int         name;
  1321. int        ncells;
  1322. int        *cell_list;
  1323.  
  1324. This function sets all the information about a particular node.
  1325.  
  1326. Inputs:            structure    - structure to find information
  1327.         node        - node to find information
  1328.         name        - node name
  1329.         ncells        - number of cells in cell_list
  1330.         cell_list    - array of cell numbers
  1331. Returns:            - 1 if successful, 0 if failure
  1332. -----------------------------------------------------------------------------*/
  1333. extern int UCDnode_set_information ();
  1334.  
  1335.  
  1336. /*  end ucd_defs.h  */
  1337.